package com.heaboy.emaidemo1.config;


import lombok.Data;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import java.util.Properties;

@Data
public class MailInfo {
    /**
     * 是否需要身份验证
     */
    private boolean validate = false;
    /**
     * 是否开启Session的debug模式，可以查看到程序发送Email的运行状态
     */
    private boolean debugMode = false;
    /**
     * 发送邮件的服务器的IP(或主机地址)
     */
    private String mailServerHost;
    /**
     * 发送邮件的服务器的端口
     */
    private String mailServerPort;
    /**
     * 登陆邮件发送服务器的用户名
     */
    private String userName;
    /**
     * 登陆邮件发送服务器的密码
     */
    private String password;


    /**
     * 获得邮件会话属性
     */
    public Properties getProperties() {
        Properties properties = new Properties();
// 默认的邮件传输协议
        properties.setProperty("mail.transport.protocol", "smtp");
// 默认的存储邮件协议
        properties.setProperty("mail.store.protocol", "pop3");
// 设置邮件服务器主机名
        properties.put("mail.host", this.mailServerHost);
        properties.put("mail.port", this.mailServerPort);
// 设置是否安全验证,默认为false,一般情况都设置为true
        properties.put("mail.smtp.auth", this.validate);
        return properties;
    }

    /**
     * JavaMail认证/验证
     *
     * @return
     */
    public Authenticator getAuthenticator() {
// 判断是否需要身份认证
        Authenticator authenticator = null;

        if (isValidate()) {
// 如果需要身份认证，则创建一个密码验证器
            authenticator = new Authenticator() {
                @Override
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(userName, password);
                }
            };
        }

        return authenticator;
    }
}
